#include"comm.hpp"



int main()
{

    sleep(3);
    int shmid = GetShm();
    llog(Debug, "Get shm done, shmid is %s", shmid);

    sleep(3);
    char* shmaddr = (char*)shmat(shmid, nullptr, 0);    // 将共享内存 与 进程A 挂接
    llog(Debug, "attach shm done, shmaddr: 0x%x", shmaddr);


    // 打开信道
    // int fd = open(FIFO_FILE, O_R); // 等待 写入方打开 管道文件之后，自己才会向后执行，open 阻塞了！
    int fd = open(FIFO_FILE, O_WRONLY); // 现在 这里是 写入方
    if(fd < 0)
    { 
        // perror("open");
        // logmessage(Fatal, "error string: %s, error code: %d\n", strerror(errno), errno);

        // logg.logmessage(Fatal, "error string: %s, error code: %d\n", strerror(errno), errno);
        llog(Fatal, "error string: %s, error code: %d\n", strerror(errno), errno);
        exit(FIFO_OPEN_ERR);
    }




    // ipc code
    while(true)
    {
        // char buffer[1024];
        cout << "Please Enter@ ";
        // fgets(buffer, sizeof(buffer), stdin);
        fgets(shmaddr, 4098, stdin);    // 一旦有人把数据写入到共享内存，不需要系统调用，可以直接拿来使用
        // memcpy(shmaddr, buffer, strlen(buffer)+1);

        write(fd, "c", 1);  // 通知对方
    }




    sleep(3);
    shmdt(shmaddr); // 手动 去关联
    llog(Debug, "detach shm done, shmaddr: 0x%x", shmaddr);

    

    close(fd);  // 关闭管道文件
    return 0;
}